package com.fr.util;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import net.sf.json.JSONObject;

/**
 * @author 作者：Zhangyangyang
 * @version 创建时间：2017年1月4日 下午1:03:56 类说明：校验json数据格式类
 */
public class ParseJson {
	/**
	 * 解析客户端传递的json数据并提取需要的数据 校验json数据格式、类型、大小以及内容是否合法 返回底层接口需要的map类型的数据
	 * 有些验证应该是前台做的事，此处默认前台什么验证都没做，只传递数据
	 */

	// 解析、提取json数据,参数是报刊json key的字符串数组和json数据的string类型的字符串
	public static Map<String, Object> parse(String[] str, String jString) {
		// 定义返回的map类型数据
		Map<String, Object> map = new HashMap<>();
		// 加入try-catch，如果json为空，json数据为空
		try {
			JSONObject json = JSONObject.fromObject(jString);
			// json数据正确标志
			map.put("flag", true);
			for (int i = 0; i < str.length; i++) {
				// 循环取出json中的数据，并将数据放入map中
				String value = json.getJSONObject("data").getString(str[i]);
				map.put(str[i], value);
			}
		} catch (Exception e) {
			// json数据错误标志
			map.put("flag", false);
		}
		return map;
	}

	// 其他基本操作
	public static Map<String, Object> otherDo(String jString, String[] str) {
		// 定义返回的map类型数据
		Map<String, Object> map = new HashMap<>();
		map = parse(str, jString);
		
		return map;
	}

	// 多张图片处理
	public static Map<String, Object> addPicDo(String jString) {
		// 定义返回的map类型数据
		Map<String, Object> map = new HashMap<>();
		String[] str = { "person_name", "images" };
		List<String> list = new ArrayList<>();
		map = parse(str, jString);
		if ((boolean) map.get("flag")) {
			String img = map.get("images").toString();
			img = img.substring(1, img.length()-1);
			String[] img_ = img.split(",");
			for (String string : img_) {
				string = string.replace("\"", "");
				list.add(string);
			}
			map.put("list", list);
			
		}
		return map;
	}

	// 单张图片处理
	public static Map<String, Object> addPicOne(String jString) {
		// 定义返回的map类型数据
		Map<String, Object> map = new HashMap<>();
		String[] str = { "image", "mode" };
		map = parse(str, jString);
		return map;
	}

	// 替换非法字符
	public static String TransactSQLInjection(String str) {
		return str.replaceAll(".*([';]+|(--)+).*", " ");
		// 我认为 应该是return str.replaceAll("([';])+|(--)+","");

	}

}
